"ui";
engines.all().map((ScriptEngine) => {
  if (engines.myEngine().toString() !== ScriptEngine.toString()) {
    ScriptEngine.forceStop();
  }
});
ui.layout(
  <vertical>
    <text gravity="center" textStyle="bold" textSize="30sp">
      牙叔出品
    </text>
    <input id="代码内容" w="*"></input>
    <button id="执行代码" bg="#d0bfff">
      执行代码
    </button>
    <input id="脚本文件路径" w="*"></input>
    <button id="执行脚本文件" bg="#d0bfff">
      执行脚本文件
    </button>
    <input id="项目入口文件路径" w="*"></input>
    <button id="执行项目" bg="#d0bfff">
      执行项目
    </button>
    <button id="日志" marginTop="8" bg="#339af0" textColor="#ffffff">
      日志
    </button>
    <button id="停止脚本" text="停止脚本"></button>
    <button id="开机自启" text="开机自启"></button>
    <View w="*" h="3px" bg="#00ff00" margin="8" id="view"></View>
    <input id="代码内容nodejs" w="*"></input>
    <button id="执行代码nodejs" bg="#63e6be">
      执行代码nodejs
    </button>
    <input id="脚本文件路径nodejs" w="*"></input>
    <button id="执行脚本文件nodejs" bg="#63e6be">
      执行脚本文件nodejs
    </button>
    <input id="项目入口文件路径nodejs" w="*"></input>
    <button id="执行项目nodejs" bg="#63e6be">
      执行项目nodejs
    </button>
  </vertical>
);

ui.代码内容.setText('toastLog("hello123");');
ui.脚本文件路径.setText("/sdcard/脚本/main.js");
ui.项目入口文件路径.setText("/sdcard/脚本/测试/main.js");
ui.代码内容nodejs.setText('"nodejs";\nconsole.log("hello");');
ui.脚本文件路径nodejs.setText("/sdcard/脚本/main.js");
ui.项目入口文件路径nodejs.setText("/sdcard/脚本/ajnodetest/main.js");

ui.执行代码nodejs.click(function () {
  let scriptContent = ui.代码内容nodejs.text();
  let filePath = files.path("./http请求.node.js");
  files.write(filePath, scriptContent);
  // 启动Node.js脚本
  const execution = $engines.execScriptFile(filePath, {
    arguments: {
      serverEngineId: $engines.myEngine().id,
    },
  });
});
let nodejsExecutions = [];
ui.执行脚本文件nodejs.click(function () {
  let filePath = ui.脚本文件路径.text().trim();
  const execution = $engines.execScriptFile(filePath, {
    arguments: {
      serverEngineId: $engines.myEngine().id,
    },
  });
  nodejsExecutions.push(execution);
});
ui.执行项目nodejs.click(function () {
  let filePath = ui.项目入口文件路径nodejs.text().trim();
  const execution = $engines.execScriptFile(filePath, {
    arguments: {
      serverEngineId: $engines.myEngine().id,
    },
  });
  nodejsExecutions.push(execution);
});

ui.开机自启.click(function () {
  let task = timers.addIntentTask({
    path: "/sdcard/脚本/开机自启.js",
    action: "android.intent.action.BOOT_COMPLETED",
  });
  toastLog("广播任务设置成功: " + task);
  // 可以到任务管理中查看这个定时任务
});

ui.执行代码.click(function () {
  eval(ui.代码内容.text());
});
ui.执行脚本文件.click(function () {
  engines.execScriptFile(ui.脚本文件路径.text().trim());
});
ui.执行项目.click(function () {
  let entryFilePath = ui.项目入口文件路径.text().trim();
  engines.execScriptFile(entryFilePath, { path: entryFilePath.replace(/\/[\w.]+?$/, "") });
});
ui.日志.click(function () {
  app.startActivity("console");
});
ui.停止脚本.click(function () {
  engines.all().map((ScriptEngine) => {
    if (engines.myEngine().toString() !== ScriptEngine.toString()) {
      ScriptEngine.forceStop();
    }
  });
  var len = nodejsExecutions.length;
  for (var i = 0; i < len; i++) {
    let execution = nodejsExecutions[i];
    execution.engine.forceStop();
  }
});
